A key-value store is a type of database that allows users to store and retrieve data in the form of key-value pairs. The key in a key-value pair is an index (e.g., number, string, etc.) that uniquely identifies its paired value. The value in a key-value pair can be any type of data object or collection of data objects. A typical key-value store exposes three operations to users: PUT, GET, and DELETE. The PUT operation stores one or more specified key-value pairs in the key-value store, the GET operation retrieves the values for one or more specified keys from the key-value store, and the DELETE operation deletes key-value pairs identified by one or more specified keys from the key-value store.
Some key-value stores are distributed in nature; in other words, they allow users to invoke key-value operations such as PUT, GET, and DELETE, on any one of a set of distinct computers (either physical or virtual) referred to as nodes. Such distributed key-value stores offer enhanced fault tolerance and scalability over non-distributed key-value stores. However, due to their decentralized nature, distributed key-value stores cannot easily provide transactional guarantees (e.g., guarantees of atomicity, durability, isolation, etc.) with respect to the execution of key-value operations.